package net.lzzy.practices.repositonies;

import net.lzzy.practices.entities.User;

import java.util.List;
import java.util.UUID;

/**
 * @author m
 */
public interface UserProjection {
    /**
     * 获取用户表中的salt
     * @return salt
     */
    String getSalt();

    /**
     *
     * @return
     */
    List<User> get();

    /**
     *
     * @param page 当前页码
     * @param size 每一页数据大小
     * @return 用户合集
     */
    List<User> get(int page,int size);

    /**
     * 统计用户数量
     * @return 用户数量
     */
    Integer count();

    /**
     * 根据关键词搜索用户
     * @param kw
     * @return 返回符合条件的用户集合
     */
    List<User> search(String kw);

    /**
     * 获取申请教师资格的用户
     * @param applying true 表示申请教师的用户
     * @return 符合条件的用户集合
     */
    List<User>  getByApplyTeacjer(boolean applying);

    /**
     * 审批通过教师资格
     * @param id 用户id
     * @return 审批后的该用户对象
     */
    User approveTeacjer(UUID id);

    /**
     * 审批不通过
     * @param id 用户id
     * @return 审批后的该用户对象
     */
    User declineTeacher(UUID id);

    /**
     *  禁止该户登入
     * @param id 用户id
     * @return 审批后的该用户对象
     */
    User banUser(UUID id);
}
